﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApp3
{
            //### 面向对象编程练习：

            //        演示：使用类来描述游戏中的角色。

            //在很多RPG游戏中，第一次打开游戏，都会先让你创建自己的**“英雄”**，或者自己要扮演的** 角色**。
            //这些英雄或者角色都是我们游戏中的“对象”，所以在开发的时候，我们需要针对每个角色都要写相应的类来描述。

            //见英雄图。

            //经过分析，我们发现，角色具有以下信息（简单数据）；

            //**字段：**角色名字，角色介绍，角色昵称，攻击力，防御力，速度。

            //**方法：**每个角色都有三个不同的攻击技能。

            //编码。

            //代码写完后，我们发现一个很严重的问题，在这四个类中，有大量重复的代码。

            //虽然这样写，不算错，但是，从代码的结构上来看，很差劲。

            //那怎么办呢？如何解决呢？
    class hero
    {
        static void Main(string[] args)
        {

            Ailuoke CX = new Ailuoke("小丑陈旭");

            CX.say();
            CX.LYMG();
            CX.SSDJ();
            CX.ZDPX();

            Taila MMWW = new Taila("默默无闻");
            MMWW.say();
            MMWW.JLCJ();
            MMWW.YSTJ();
            MMWW.FCSL();

            Lukasi TTXX = new Lukasi("偷偷学习");

            TTXX.say();
            TTXX.XFJW();
            TTXX.NLLC();
            TTXX.JSXJ();

            Feiluo WDCC = new Feiluo("弯道超车");
            WDCC.say();
            WDCC.NLJL();
            WDCC.SKBL();
            WDCC.AYCS();
            Console.ReadKey();
        }
    }
    class preson
    {
        public string userName;
        public string name;
        public string attack;
        public string lifebar;
        public string speed;
        public string introduce;



        public void say()
        {
            Console.WriteLine("英雄名字叫{0}，我的名字叫{1}，我的攻击力为{2}，我的血量为{3}，我的速度为{4},英雄价绍{5}",
                this.name, this.userName, this.attack, this.lifebar, this.speed, this.introduce);

        }


    }

    class Ailuoke : preson
    {

        public Ailuoke(string userName)
        {
            this.userName = userName;
            this.name = "埃洛克";
            this.introduce = "埃洛克是来自末日边境的勇士";
            this.lifebar = "75";
            this.speed = "60";
            this.attack = "40";

        }


        public void SSDJ()
        {
            Console.WriteLine("第一技能：碎石打击");
        }
        public void LYMG()
        {
            Console.WriteLine("第二技能：烈焰锚钩");
        }

        public void ZDPX()
        {
            Console.WriteLine("第三技能：战斗咆哮");
        }


    }
    class Taila : preson
    {
        public Taila(string userName)
        {
            this.userName = userName;
            this.name = "泰拉";
            this.introduce = "泰拉是为复仇而来的";
            this.lifebar = "70";
            this.speed = "55";
            this.attack = "40";

        }
        public void JLCJ()
        {
            Console.WriteLine("第一技能：巨浪冲击");
        }
        public void YSTJ()
        {
            Console.WriteLine("第二技能：元素突击");
        }

        public void FCSL()
        {
            Console.WriteLine("第三技能：复仇杀戮");
        }



    }
    class Lukasi : preson
    {
        public Lukasi(string userName)
        {
            this.userName = userName;
            this.name = "卢卡斯";
            this.introduce = "卢卡斯是一位彬彬有礼的剑客";
            this.lifebar = "75";
            this.speed = "60";
            this.attack = "40";

        }
        public void JSXJ()
        {
            Console.WriteLine("第一技能：减速陷阱");
        }
        public void NLLC()
        {
            Console.WriteLine("第二技能：能量浪潮");
        }

        public void XFJW()
        {
            Console.WriteLine("第三技能：旋风剑舞");
        }


    }
    class Feiluo : preson
    {
        public Feiluo(string userName)
        {
            this.userName = userName;
            this.name = "菲洛";
            this.introduce = "菲洛是一名攻击迅猛且擅长传送魔法的时空旅行者";
            this.lifebar = "70";
            this.speed = "55";
            this.attack = "70";

        }
        public void NLJL()
        {
            Console.WriteLine("第一技能：能量精灵");
        }
        public void AYCS()
        {
            Console.WriteLine("第二技能：暗影传送");
        }

        public void SKBL()
        {
            Console.WriteLine("第三技能：时空迸裂");
        }





    }
}

